package yuhuibear.poat.query;

/**
 * 
 * @author yuhuibear
 */
public interface QueryAssistor {

	/**
	 * 获取 执行对象的属性配置<br>
	 * 如 select 的内容， update 的属性值等。
	 * 
	 * @return
	 */
	String getAttributes();

	/**
	 * 返回sql 的查插删改语句头。如 select , insert 等.
	 * 
	 * @return
	 */
	String getCmd();

	/**
	 * SQL 语句的类型。
	 * 
	 * @return
	 */
	int getCmdType();

	/**
	 * 获取查询条件。
	 * 
	 * @return
	 */
	String getConditions();

	/**
	 * 获取查询的表名。
	 * 
	 * @return
	 */
	String getFrom();

	/**
	 * 获取除去目标表名的From内容。
	 * 
	 * @return
	 */
	String getFromExceptTarget();

	/**
	 * 排序信息。
	 * 
	 * @return the orderBy
	 */
	String getOrderBy();

	/**
	 * 分组信息。
	 * 
	 * @return
	 */
	String getGroupBy();

	/**
	 * 分页信息。<br>
	 * offset ? limit ? <br>
	 * 这个特性由 postgre sql 提供。
	 * 
	 * @return string of paged information.
	 */
	String getPageInfro();

	/**
	 * 获取查询目标。
	 * 
	 * @return
	 */
	String getTarget();

	/**
	 * 获取查询目标的类型信息.
	 * 
	 * @return
	 */
	Class<?> getTargetType();

	/**
	 * 是否使用了as 设置。
	 * 
	 * @return
	 */
	boolean hasAs();

	/**
	 * 是否需要派出相同的。
	 * 
	 * @return
	 */
	boolean isDistinct();
}
